package lombok.demo;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * {@code @EqualsAndHashCode}: 根据所有相关字段为对象继承的equals和hashCode方法生成实现(如何重写)。
 * {@code @EqualsAndHashCode.Exclude}: 用来代替 @EqualsAndHashCode 的 exclude 属性的注解。
 * <p>
 * 属性解析: <p>
 * exclude: 在生成equals和hashCode时要排除的字段列表。已过时，不推荐使用。
 * callSuper: 在计算此类中的字段之前，是否调用超类的equals和hashCode作为生成的 equals 算法的一部分。默认为false。
 * 由于该属性的true在父类是Object时没有意义，会出现异常: Generating equals/hashCode with a supercall to java.lang.Object is pointless.
 *
 * @author yexi
 */
@EqualsAndHashCode(/*exclude = {"sex"}, */callSuper = true)
@Data
public class EqualsAndHashCodeDemo extends SuperClass {
    private int age;

    private char sex;

    // 不可与旧风格的exclude同时使用，会出现异常: The old-style 'exclude/of' parameter cannot be used together with the new-style @Include / @Exclude annotations.
    @EqualsAndHashCode.Exclude
    private int height;

    private float money;
}
